# -*- coding: utf-8 -*-
# @Time    : 2022/1/21 16:21
# @Author  : Mr.Ye
# @Email   : a3289748713@163.com
# @File    : mange_migrate.py
# @Software: PyCharm

"""
    python manage_migrate.py db init # 创建迁移仓库
    python manage_migrate.py db migrate -m "initial" #  创建迁移脚本嘛，"initial"是注释
    python manage_migrate.py db upgrade # 更新数据库

    -----------------*-------------------
    实际操作顺序:
        1.python 文件 db init
        2.python 文件 db migrate -m"版本名(注释)"
        3.python 文件 db upgrade 然后观察表结构

    根据需求修改模型:
        1.python 文件 db migrate -m"新版本名(注释)"
        2.python 文件 db upgrade 然后观察表结构
        3.若返回版本,则利用 python 文件 db history查看版本号
        4.python 文件 db downgrade(upgrade) 版本号
"""

from flask_script import Manager, Server
from flask_migrate import MigrateCommand, Migrate
import os
from dotenv import load_dotenv

# 先加载环境变量
env_path = os.path.join(os.path.dirname(__file__), '.env')
if os.path.exists(env_path):
    load_dotenv(env_path, override=True, verbose=True)

# 在调用函数哦
from MyVideo import app
from MyVideo.models import db

db.init_app(app)
migrate = Migrate(app, db)
manager = Manager(app=app)

manager.add_command("server", Server())
manager.add_command("db", MigrateCommand)


@manager.shell
def make_shell_context():
    return dict(app=app, db=db)


if __name__ == '__main__':
    manager.run()
